package com.uzai.console.service.wechatwork;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.wechatprivate.wxcontacts.WxContactsQuery;
import com.uzai.console.dto.wechatwork.wxworkcontacts.*;
import com.uzai.console.vo.exportinfo.ExportAmountVo;
import com.uzai.console.vo.wechatprivate.wxcontacts.WxContactsBatchRefreshVo;
import com.uzai.console.vo.wechatwork.wxworkcontacts.WxworkContactsVo;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface WxworkContactsService {

    /**
     * 查询企业微信通讯录列表
     *
     * @param wxworkContactsQuery
     * @param tuominFlag 是否需要脱敏
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Page<WxworkContactsVo> findWxworkContactsList(WxworkContactsQuery wxworkContactsQuery, Boolean tuominFlag);

    /**
     * 企业微信通信录删除
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxworkContactsIdListDto
     * @return null
     */
    void deleteWxworkContacts(WxworkContactsIdListDto wxworkContactsIdListDto);

    /**
     * 单个发送消息
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxworkContactsSendMessageDto
     * @return null
     */
    void sendMessage(WxworkContactsSendMessageDto wxworkContactsSendMessageDto);

    /**
     * 企业微信通讯录注册
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxworkContactsIdDto
     * @return null
     */
    void register(WxworkContactsIdDto wxworkContactsIdDto);

    /**
     * 刷新企业微信通讯录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    void refreshWxworkContacts(WxworkContactsRefreshDto wxworkContactsRefreshDto);

    /**
     * 批量刷新企业微信通讯录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    WxContactsBatchRefreshVo batchRefreshWxworkContacts(WxworkContactsBatchRefreshDto wxworkContactsBatchRefreshDto);

    /**
     * 企业微信通讯录根据单个机器人群发消息(异步)
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkaddBatchSendMessageTaskDto
     * @return null
     */
    void groupSendMsgByDeviceUniqueId(WxworkAddBatchSendMessageTaskDto wxworkaddBatchSendMessageTaskDto);

    /**
     * 企业通讯录批量注册
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkContactsQuery
     * @return null
     */
    void batchRegisterSync(WxworkContactsQuery wxworkContactsQuery);

    /**
     * 查询 企业微信通讯录总记录数
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxworkContactsQuery
     * @return null
     */
    long searchTotal(WxworkContactsQuery wxworkContactsQuery);

    /**
     * 查询企业微信通讯录所有记录
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxworkContactsQuery
     * @return null
     */
    List<WxworkContactsVo> scrollSearchAll(WxworkContactsQuery wxworkContactsQuery);

    /**
     * 企业微信通讯录根据单个机器人新建群发消息
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkNewBatchSendMessageTaskDto
     * @return null
     */
    Integer newBatchSendMessageTaskSync(WxworkNewBatchSendMessageTaskDto wxworkNewBatchSendMessageTaskDto, Long groupSendJobParentId, Long deviceUniqueId, String loginName);

    /**
     * 查询根据单个机器人新建群发消息总数
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkNewBatchSendMessageTaskDto
     * @return null
     */
    int findBatchSendMessageTaskSyncCount(WxworkNewBatchSendMessageTaskDto wxworkNewBatchSendMessageTaskDto, Long deviceUniqueId);

    /**
     * 企业微信通讯录导出记录数和总金额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkContactsQuery
     */
    ExportAmountVo getExportAmount(WxworkContactsQuery wxworkContactsQuery);

    /**
     * 批量同步微信备注到用户列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @return null
     */
    void batchRefreshUserRemark(WxworkContactsBatchRefreshUserRemarkDto wxworkContactsBatchRefreshUserRemarkDto);

    /**
     * 删除单个机器人的通讯录
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     * @return null
     */
    void deleteWxContactsByDeviceUniqueId(Long deviceUniqueId, Long merId);

    /**
     * 通讯录批量删除
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxworkContactsQuery
     * @return null
     */
    void batchDeleteSync(WxworkContactsQuery wxworkContactsQuery);

}
